import { request } from 'umi';

/**
 * get one record by id
 */
export async function getFormTemplateById(id: number, params: object = {}) {
  return request<ApiResponse.ResultModel<FormTemplateType.FormTemplateResponse>>(
    `/api/formTemplate/getById/${id}`,
    {
      method: 'GET',
      params: params,
    },
  );
}

/**
 * get all records
 */
export async function getFormTemplateAll(params: object = {}) {
  return request<ApiResponse.ResultModel<FormTemplateType.FormTemplateResponse>>(
    `/api/formTemplate/getAll`,
    {
      method: 'GET',
      params: params,
    },
  );
}

/*
 * get records by page
 */
export async function getFormTemplatePageList(params: object = {}) {
  return request<PageInfo.PageResponse<FormTemplateType.FormTemplateResponse>>(
    `/api/formTemplate/getAll`,
    {
      method: 'GET',
      params: params,
    },
  );
}

/*
 * update partial field of record
 */
export async function commonUpdate(id: number, fieldName: string, value: string) {
  return request<ApiResponse.ResultModel<FormTemplateType.FormTemplate>>(
    `/api/formTemplate/PatchById?id=${id}`,
    {
      method: 'PATCH',
      headers: {
        'Content-Type': 'application/json',
      },
      data: [
        {
          id: id,
          op: 'replace',
          path: `/${fieldName}`,
          value: value,
        },
      ],
    },
  );
}

/*
 * update record
 */
export async function updateFormTemplate(params: FormTemplateType.FormTemplateResponse) {
  return request<ApiResponse.ResultModel<boolean>>(`/api/formTemplate/put`, {
    method: 'put',
    headers: {
      'Content-Type': 'application/json',
    },
    data: [params],
  });
}

/*
 * add one record
 */
export async function addFormTemplate(params: FormTemplateType.FormTemplateResponse) {
  return request<ApiResponse.ResultModel<FormTemplateType.FormTemplateResponse>>(
    '/api/formTemplate/add',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: [params],
    },
  );
}

export async function deleteFormTemplate(params: DeleteRequest) {
  return request<ApiResponse.ResultModel<boolean>>(`/api/formTemplate/delete`, {
    method: 'DELETE',
    headers: {
      'Content-Type': 'application/json',
    },
    data: [params.id],
  });
}
